//测试数据，demoData.index表示index文件调用的数据，demoData.member表示member也需要调用的数据
var demoData = {
    "index": {
        code: 1,
        msg: "成功",
        data: [{
            "newfi": "上网",
            "map": "地图"
        },{
            "newfi": "上网",
            "welfare": "福利",
            "member": "我的",
        }],
        ui: {
            css: ["newfi_newfi", "map_map"],//需要导入的css，模块名称_文件名称
            js: ["newfi_newfi", "map_map"],//需要导入的js文件,模块名称_文件名称
            template: '',//替换模板内容,不为空则插入body最后,然后根据返回数据格式化模板
            //url:'http://www.szaltair.com',//替换当前UI需要打开的地址优先级最高
            //html:'<div style="color:red">this is test html</div>',//替换当前页面内容优先级其次
            //callback: 'window.mdNewFi.onlineUser()'
        }
    },
    "member": {
        code: 1,
        msg: "成功",
        data: [{
            "newfi": "上网",
            "map": "地图"
        },{
            "newfi": "上网",
            "welfare": "福利",
            "member": "我的",
        }],
        ui: {
            css: ["newfi_newfi", "map_map"],
            js: ["newfi_newfi", "map_map"],
            template: '<script id="maphome" class="templatesc"  type="text/x-dot-template">这个是地图<br/>这个是地图<br/>这个是地图<br/>这个是地图<br/>这个是地图<br/>这个是地图<br/>这个是地图<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></script>',
            //url:'http://www.szaltair.com',
            //html:'<html><body style="margin:0px;padding:0px;"><div style="color:red;width:100%;height:100%;background:#666;">this is test html</div></body></html>',
            callback: 'window.mdNewFi.onlineUser()'
        }
    }
}



var common = {

    //获取当前目录Widget格式的路径
    getWidgetPath: function() {
        var pagePath = window.location.href.replace("file://" + api.wgtRootDir, "widget://");

        var widgetPath = pagePath.substring(0, pagePath.lastIndexOf("/"));


        if(api.systemType == "android")
        {
          widgetPath=widgetPath+"/";
        }
        return widgetPath;
    },

    //获取当前目录的相对路径
    getRelativePath: function() {
        var pagePath = window.location.href;
        if(api.wgtRootDir.indexOf("file://")!=-1)
        {
           pagePath=pagePath.replace( api.wgtRootDir, "");
        }
        else {
           pagePath=pagePath.replace("file://" + api.wgtRootDir, "");

        }
        var length = pagePath.split("/").length - 2;
        var relativePath = "";
        if (length == 0) {
            relativePath = "./";
        } else {

            for (var i = 0; i < length; i++) {
                relativePath = relativePath + "../";
            }

        }
        return relativePath;
    },

    //根据返回数据ret.ui.css 字段导入CSS文件
    importCss: function(cssModeArray) {

        var relativePath = this.getRelativePath();

        for (var i = 0; i < cssModeArray.length; i++) {
            var item = cssModeArray[i].split("_");
            var cssPath = "";
            if (item.length > 1) {
                cssPath = relativePath + "css/" + item[0] + "/" + item[1] + ".css";
            } else {
                cssPath = relativePath + "css/" + item[0] + "/" + item[0] + ".css";
            }

            $("html head").append('<link rel="stylesheet" type="text/css" href="' + cssPath + '"/>');
        }
    },
    //根据返回数据ret.ui.js 字段导入js 文件
    importJs: function(jsModeArray) {
        var relativePath = this.getRelativePath();

        for (var i = 0; i < jsModeArray.length; i++) {
            var item = jsModeArray[i].split("_");
            var jsPath = "";
            if (item.length > 1) {
                jsPath = relativePath + "script/" + item[0] + "/" + item[1] + ".js";
            } else {
                jsPath = relativePath + "script/" + item[0] + "/" + item[0] + ".js";
            }

            $("html head").append('<script type="text/javascript" src="' + jsPath + '"></script>');
        }


    },

    //插入模板代码到body后面，通过取最后一个匹配的规则覆盖原来的模板
    insertTemplate: function(template) {
        $("html body").append(template);
    },

    //替换页面HTML代码
    replacePage: function(html) {
        document.write(html);
    },

    //根据UI字段和返回数据格式化模板写入指定的HTML容器内
    applyUI: function(ui, data, templateClass, templateHtmlBox) {

        //重定向到新的URL地址
        if (ui.url != null && ui.url != "") {
            setTimeout(function() {
                window.location.href = ui.url;
            }, 200);
            return;
        }

        //重写页面内容
        if (ui.html != null && ui.html != "") {
            this.replacePage(ui.html);
            return;
        }

        //导入css模块
        this.importCss(ui.css);
        //导入js模块

        this.importJs(ui.js);

        //如果返回UI模板不为空则插入模板，用以增加或替换原有的模板
        if (ui.template != null && ui.template != "") {
            this.insertTemplate(ui.template);
        }

        //如果存在默认的main-ui模板,则初始化模板
        if ($(".main-ui").length > 0) {
            var tmphtml=$(".main-ui").last().text();
            if(tmphtml!=null && tmphtml!="" && tmphtml!="undefined")
            {
              var htmlfn = doT.template(tmphtml);
              $("#main-box").html(htmlfn(data));
            }
        }

        //如果模板存在则格式化模板，然后写入容器
        if (templateClass && templateClass != "") {
            var tpl = $(templateClass).last().text();
            if(tpl!=null && tpl!="" && tpl!="undefined")
            {
                var htmlfn = doT.template(tpl);
                if (templateHtmlBox && templateHtmlBox != "") {
                    $(templateHtmlBox).html(htmlfn(data));
                }
            }
        }

        //如果callback有值则运行eval(ret.ui.callback)执行回调
        if (ui.callback != null && ui.callback != '') {
            eval(ui.callback);
        }


    },

    initPageDataUI: function(requesturl, param, callback) {
        //初始化页面数据和UI
        api.ajax({
            url: requesturl,
            method: 'post',
            data: {
                values: param
            }
        }, function(ret, err) {
            //测试数据
            if (demoData) {
                if (param.pageName && demoData[param.pageName]) {
                    ret = demoData[param.pageName];
                } else {
                    ret = demoData["index"];
                }
            }

            common.applyUI(ret.ui, ret.data,param.templateClass,param.templateHtmlBox);
            if (callback) {
                callback(ret, err);
            }
        });
    },
    ajax: function(requesturl, param, callback) {
        //封装了ajax请求
        api.ajax({
            url: requesturl,
            method: 'post',
            data: {
                values: param
            }
        }, function(ret, err) {
            if (callback) {
                callback(ret, err);
            }
        });

    },

    InitCommonTemplateData: function(layout,callback) {
        //初始化APP通用的模板存入本地供其他页面调用
        if (layout == null || layout == "undefined") {
            layout = "layout";
        }

        var templatefile = this.getWidgetPath() + "html/" + layout + "/template.html";

        //读取文本文件内容
        //var templatefile=this.getRelativePath()+"html/"+layout+"/template.html";
        api.readFile({
            path: templatefile
        }, function(ret, err) {
            if (ret) {
                $("body").append(ret.data);
                window.templates = {};
                //each() 方法规定为每个匹配元素规定运行的函数
                $(".templatesc").each(function() {
                    var tid = $(this).attr("id");
                    if (tid != undefined) {
                        window.templates[tid] = $(this).html();
                    }
                });

                $api.setStorage("templates",window.templates);
                callback();

            } else {

            }
        });
        return;
    },
    getCommonTemplateHtml: function(templateName) {
        //获取指定模板名称的模板内容
        var templates = $api.getStorage("templates");
        if (templates != null && templates != "undefined") {
            return templates[templateName];
        } else {
            return "";
        }

    },

    bindUIData:function(template,data,elem){
       //根据模板和数据格式化模板写入 html容器
        if(template!=null && template!="" && template!="undefined")
        {
          var htmlfn = doT.template(template);
          $(elem).html(htmlfn(data));
        }
    },

    openFrame:function(pageurl,param){
      //打开一个frame窗口,判断是否有传窗口名称，没有则通过文件路径获取名称传入
      if(param ==null)
      {
         param={};
      }

      if(param.name == null)
      {
        var arr = pageurl.split("/");
        param.name=arr[arr.length-1].replace(".html","");
        if(arr.length>1)
        {
           param.name=arr[arr.length-2].replace(".","")+param.name;
        }
      }

      api.openFrame({
          name: param.name,
          url: pageurl,
          rect: {
              x: 0,
              y: 60,
              w: api.winWidth,
              h: api.winHeight-100
          },
          pageParam: param
      });
    }
};
